package com.ggqq.dao;

import com.ggqq.entity.Blog;
import com.ggqq.queryEntity.*;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 博客 dao层
 * */
@Mapper
@Repository
public interface BlogDao {

    List<BlogQuery> getAllBlogQuery();

    ShowBlog getBlogById(Long id); //根据id查询博客

    int saveBlog(Blog blog);

    int updateBlog(ShowBlog showBlog);

    void deleteBlog(Long id);

    List<BlogQuery> searchByTitleOrTypeOrRecommend(SearchBlog searchBlog);//根据标题、类型来查询博客

    List<FirstPageBlog> getFirstPageBlog();

    List<RecommendBlog> getRecommendBlog();//获取推荐的博客

    List<FirstPageBlog> getSearchBlog(String query);//搜索文章

    DetailedBlog getDetailedBlog(Long id);//获取博客详情

    // 这两个方法自己接口实现类调用 不对外开放接口
    int updateViews(Long id);//文章访问自增

    int getCommentCountById(Long id);//根据博客id查询出评论数量并更新

    List<FirstPageBlog> getByTypeId(Long typeId);//根据TypeId获取博客列表，在分类页进行的操作

    //统计博客信息
    Integer getBlogTotal();

    Integer getBlogViewTotal();

    Integer getBlogCommentTotal();

    Integer getBlogMessageTotal();

}
